<?php
require_once 'ErrorView.php';
require_once 'LoginController.php';
require_once 'DatabaseConnection.php';
require_once 'RegisterController.php';
require_once 'LoginView.php';

class MasterController {
	
    public function doControll()
    {
        $xhtml = "";
		
		// Kolla om användaren har kört Install.php
		if ($this->installStatus() == true)
		{
			// Inkluderar Settings.
			require_once 'Settings.php';
			
			// Settings objekt för att hämta information för att kunna hämta från databasen.
			$Settings = new Settings();
			
			// Skapar en instans av DatabaseConnection.
			$database = new DatabaseConnection($Settings->getDbHost(), $Settings->getDbUsername(),
			$Settings->getDbPassword(), $Settings->getDbName(), $Settings->getTablePrefix());
			
			// Anslut till databasen.
			$database->Connect();
		
			// Skapar en instans av LoginController.
			$lc = new LoginController($database);
		
			// Väljer kontroller baserat på querystring.
			if (isset($_GET['controller']) && isset($_GET['controller']) == 'registerUser')
			{
				// Skapar en instans av RegisterController.
				$registerController = new RegisterController($database);
				
				// Anropar funktionen doControll.
				$xhtml = $registerController->doControll();
			}
			else
			{
				// Anropar funktionen DoControll.
				$xhtml = $lc->doControll();
			}
		
			// Stänger databasanslutningen.
			$database->Close();
		}
		else
		{
			// Skapar en instans av ErrorView.
			$ErrorView = new ErrorView();
			
			// Radera eventuell lagrad cookie på användarens dator.
			$LoginView = new LoginView();
			
			$LoginView->removeCookie();
			
			// Returnerar att användaren måste köra install.php
			$xhtml .= $ErrorView->showErrorMessage("Du måste köra <a href='Install.php'>Install</a> först!", "hint");
		}
		
        return $xhtml;
    }
	
	// Kontrollerar ifall Notes är installerat.
	public function installStatus()
	{
		// Kollar om användaren har kört Install.
		if(file_get_contents('Settings.php') == true)
		{
			return true;
		}
		
		return false;
	}
}